package com.macro.mall.dao;

import com.macro.mall.dto.DashboardOrderChartDTO.OrderChartData;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 仪表盘统计自定义Dao
 * Created by macro on 2023/6/15.
 */
public interface DashboardDao {

    /**
     * 获取今日订单总数
     */
    Integer getTodayOrderCount();

    /**
     * 获取今日销售总额
     */
    Map<String, Object> getTodaySalesAmount();

    /**
     * 获取昨日销售总额
     */
    Map<String, Object> getYesterdaySalesAmount();

    /**
     * 获取待处理订单数量
     */
    Integer getOrderCountByStatus(@Param("status") Integer status);

    /**
     * 获取退货申请数量
     */
    Integer getReturnApplyCount(@Param("status") Integer status);

    /**
     * 获取商品数量
     */
    Integer getProductCount(@Param("publishStatus") Integer publishStatus, @Param("verifyStatus") Integer verifyStatus);

    /**
     * 获取库存紧张商品数量
     */
    Integer getLowStockProductCount(@Param("stock") Integer stock);

    /**
     * 获取用户数量统计
     */
    Integer getUserCount(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 获取订单数量统计
     */
    Integer getOrderCount(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 获取订单销售额统计
     */
    Map<String, Object> getOrderSalesAmount(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 获取按天统计的订单数据
     */
    List<OrderChartData> getOrderChartData(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
} 